home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
BARNET
/
PROGRAMMING
/
DOCS
/
ZEROPAGE
< prev
next >
Wrap
Text File
|
1996-10-06
|
14KB
|
497 lines
This is an incomplete list of the allocation of address space in 'zero page'.
It is currently maintained by Matthew Wilcox <mrw103@york.ac.uk> and is
available as ftp://ftp.barnet.ac.uk/pub/Acorn/zeropage.txt or as
http://www.york.ac.uk/~mrw103/zeropage.txt. If you can't get it using
either of these methods then mail me, asking *nicely*. Please mail me any
corrections or additions to me so they can be incorporated into the list.
I would be particularly interested in differences in other versions of RISC
OS. Last updated on Mon 07th October 1996
Credits (alphabetically):
Carol Carpenter for providing space on Barnet's FTP site for this document
Ben Dooks for telling me the base of the Vector table & for writing VecList
Nick Smith for reading RAM speed & MEMC type from zero page in !ArmSI
Mark Wooding for mentioning that DDEUtils frobbed around in zero page
All addresses are given in hexadecimal and refer to the start of the word
containing the value. Where a range is given, it is given to the beginning
of the last word in the range. These addresses were valid on my 4Mb A440
running RISC OS 3.1. None of them are guaranteed to remain in the same
place between different versions of the OS. Some will definitely be
different under RISC OS 3.5+. Always use the defined system interfaces in
preference to direct accesses if possible. No liability is assumed for any
loss or damage which may result as the result of yourself or others use or
misuse of the information contained in this document.
Address Contents
0 Branch Through Zero handler
4 Undefined Instruction handler
8 Software Interrupt handler
C Prefetch Abort handler
10 Data Abort handler
14 Address Exception handler
18 IRQ handler
1C - FC FIQ routine
100 Address called by ROM IRQ handler routine. (&C34)
104 Bit 4 Escape condition occured
108 Value of R13_irq after last IRQ happened
10C Monotonic time
110 Byte 0 } RAM speed
Byte 1 }
Bit 16 MEMC1 if clear, MEMC1a if set
114 Bit 2 } used by OS_SetMemMapEntries. Not understood how.
Bit 3 }
118 [has value 0. Is it unused?]
11C MemoryLimit value
120 Undefined instruction handler address
124 Prefetch abort handler address
128 Data abort handler address
12C Address exception handler address
130 Error handler address
134 Error buffer address
138 R0 on entry to Error handler
13C R12 on entry to CallBack handler
140 CallBack handler address
144 Pointer to CallBack register buffer
148 R12 on entry to BreakPoint handler
14C BreakPoint handler address
150 Pointer to BreakPoint register buffer
154 R12 on entry to Escape handler
158 Escape handler address
15C R12 on entry to Event handler
160 Event handler address
164 - 360 Page tables. Top nybble contains page protection level
364 - 560 Here be dragons. All zero, too. Unused?
564 Address of page tables
568 Highest page number
56C Total amount of RAM in machine in bytes
570 Application space
574 R12 on entry to Unused SWI handler
578 Unused SWI handler address
57C Exit handler address
580 R12 on entry to Exit handler
584 R12 on entry to UpCall handler
588 UpCall handler address
58C
590
594
598 Byte 0
Byte 1
Byte 2
Byte 3 Keyboard ID
59C
5A0
5A4
5A8
5AC
5B0
5B4
5B8
5BC
5C0 Mouse X multiplier
5C4 Mouse Y multiplier
5C8 Address of keyboard handler
5CC - 7CC The Great Swamp
7D0 Pointer to Module chain
7D4 Currently Active Object pointer
7D8 UserV (00)
7DC ErrorV (01)
7E0 IrqV (02)
7E4 WrchV (03)
7E8 RdchV (04)
7EC CLIV (05)
7F0 ByteV (06)
7F4 WordV (07)
7F8 FileV (08)
7FC ArgsV (09)
800 BGetV (0A)
804 BPutV (0B)
808 GBPBV (0C)
80C FindV (0D)
810 ReadLineV (0E)
814 FSCV (0F)
818 EventV (10)
81C *V (11) }
820 *V (12) } These vectors reserved by Acorn
824 *V (13) }
828 InsV (14)
82C RemV (15)
830 CnpV (16)
834 UKVDU23V (17)
838 UKSWIV (18)
83C UKPLOTV (19)
840 MouseV (1A)
844 VDUXV (1B)
848 TickerV (1C)
84C UpcallV (1D)
850 ChngEnvirnmentV (1E)
854 SpriteV (1F)
858 DrawV (20)
85C EconetV (21)
860 ColourV (22)
864 PaletteV (23)
868 SerialV (24)
86C *V (25) }
870 *V (26) }
874 *V (27) }
878 *V (28) }
87C *V (29) }
880 *V (2A) } These vectors reserved by Acorn
884 *V (2B) }
888 *V (2C) }
88C *V (2D) }
890 *V (2E) }
894 *V (2F) }
898 Pointer to exception registers
89C - A38 Garroting Deep
A3C Byte 0
Byte 1
Byte 2
Byte 3 [referred to by ROM PaletteV]
A40 - AC8 Northron Climbs
ACC Current size of sprite area
AD0 Current size of RAM filing system
AD4 Current size of font cache
AD8 Base of OS_CallEvery/CallAfter list
ADC first 4 bytes of time that program was started
AE0 Byte 0 last byte of time that program was started
Byte 1 input file handle
Byte 2 output file handle
Byte 3
AE4 Bit 8 } [referenced by kernel swi exit routines]
Bit 9 }
Bit 10 Outstanding OS_AddCallback.
Bit 16 IOEB ASIC present
Bit 17 82C710 present
Bit 18 LCD ASIC present
Bit 19 82C711 present
AE8-BE4 Program environment string
BE8
BEC
BF0
BF4
BF8
BFC
C00
C04
C08
C0C
C10
C14
C18
C1C
C20
C24
C28 page size in bytes
C2C
C30
C34 MOV r3, #&03200000 }
C38 LDRB r0, [r3, #36] }
C3C CMP r0, #0 }
C40 LDREQB r0, [r3, #20] }
C44 ADREQ r1, &D24 } IRQ handler routine
C48 ADRNE r1, &E24 }
C4C LDRB r0, [r1, r0] }
C50 ADD r1, pc, r0, LSL #2 }
C54 LDMIA r1, {r12, pc} }
C58 R12 value for device 0 vector
C5C Address of device 0 handler
C60 points to next handler for device 0
C64 R12 value for device 1 vector
C68 Address of device 1 handler
C6C points to next handler for device 1
C70 R12 value for device 2 vector
C74 Address of device 2 handler
C78 points to next handler for device 2
C7C R12 value for device 3 vector
C80 Address of device 3 handler
C84 points to next handler for device 3
C88 R12 value for device 4 vector
C8C Address of device 4 handler
C90 points to next handler for device 4
C94 R12 value for device 5 vector
C98 Address of device 5 handler
C9C points to next handler for device 5
CA0 R12 value for device 6 vector
CA4 Address of device 6 handler
CA8 points to next handler for device 6
CAC R12 value for device 7 vector
CB0 Address of device 7 handler
CB4 points to next handler for device 7
CB8 R12 value for device 8 vector
CBC Address of device 8 handler
CC0 points to next handler for device 8
CC4 R12 value for device 9 vector
CC8 Address of device 9 handler
CCC points to next handler for device 9
CD0 R12 value for device 10 vector
CD4 Address of device 10 handler
CD8 points to next handler for device 10
CDC R12 value for device 11 vector
CE0 Address of device 11 handler
CE4 points to next handler for device 11
CE8 R12 value for device 12 vector
CEC Address of device 12 handler
CF0 points to next handler for device 12
CF4 R12 value for device 13 vector
CF8 Address of device 13 handler
CFC points to next handler for device 13
D00 R12 value for device 14 vector
D04 Address of device 14 handler
D08 points to next handler for device 14
D0C R12 value for device 15 vector
D10 Address of device 15 handler
D14 points to next handler for device 15
D18 R12 value for no device
D1C address of no device handler
D20 points to next handler for no device
D24 - E20 IRQ register A priority table
E24 - F20 IRQ register B priority table
F24 Base of AddCallBack list
F28
F2C
F30
F34
F38
F3C
F40
F44
F48
F4C
F50
F54
F58
F5C
F60
F64 Unique Machine ID word 0
F68 Unique Machine ID word 1
F6C
F70
F74
F78
F7C
F80 Byte 0 Kernel flag to prevent reentering MessageTrans_ErrorLookup
Byte 1
Byte 2
Byte 3
F84
F88
F8C
F90
F94
F98
F9C
FA0
FA4
FA8
FAC
FB0
FB4
FB8
FBC
FC0
FC4
FC8
FCC
FD0
FD4
FD8
FDC
FE0
FE4
FE8
FEC
FF0
FF4
FF8 Bottom 16 bits of task handle
FFC
It appears to me that everything VDU related is stored after &1000.
1000
1004
1008
100C
1010
1014
1018
101C
1020
1024
1028
102C
1030
1034
1038
103C
1040 GCOL action for foreground colour [151]
1044 GCOL action for background colour [152]
1048 Graphics foreground colour [153]
104C Graphics background colour [154]
1050 Left-hand column of the graphics window [128]
1054 Bottom row of the graphics window [129]
1058 Right-hand column of the graphics window [130]
105C Top row of the graphics window [131]
1060
1064
1068
106C
1070
1074
1078
107C Amount of RAM required by current screen mode
1080
1084
1088 [referenced by RemoveCursors]
108C
1090 [referenced by RemoveCursors]
1094
1098
109C
10A0 [referenced by SetECFOrigin]
10A4
10A8
10AC
10B0
10B4 [referred to by ROM PaletteV]
10B8
10BC
10C0 Address of the start of screen used by VDU drivers [148]
10C4 [referenced by SetECFOrigin]
10C8
10CC
10D0
10D4
10D8
10DC
10E0 Left-hand column of the text window [132]
10E4 Bottom row of the text window [133]
10E8 Right-hand column of the text window {134]
10EC Top row of the text window [135]
10F0 x coordinate of the graphics origin (ec) [136]
10F4 y coordinate of the graphics origin (ec) [137]
10F8 x coordinate of the graphics cursor (ec) [138]
10FC y coordinate of the graphics cursor (ec) [139]
1100 x coordinate of oldest graphics cursor (ic) [140]
1104 y coordinate of oldest graphics cursor (ic) [141]
1108 x coordinate of previous graphics cursor (ic) [142]
110C y coordinate of previous graphics cursor (ic) [143]
1110 x coordinate of the graphics cursor (ic) [144]
1114 y coordinate of the graphics cursor (ic) [145]
1118 x coordinate of new point (ic) [146]
111C y coordinate of new point (ic) [147]
1120 Text foreground colour [155]
1124 Text background colour [156]
1128
112C
1130 [referenced by RemoveCursors]
1134
1138
113C [referenced by RemoveCursors]
1140
1144
1148
114C
1150
1154
1158
1160
1164
1168
116C
1170
1174
1178 Address of the start of screen used by display hardware [149]
117C
1180
1184 Highest logical colour number available in this mode
1188
118C
1190
1194
1198
119C
11A0
11A4
11A8
11AC
11B0
11B4
11B8
11BC
11C0
11C4
11C8
11CC
11D0 Current screen mode number
11D4 Tint for text foreground colour [159]
11D8 Tint for text background colour [160]
11DC Tint for graphics foreground colour [157]
11E0 Tint for graphics background colour [158]
11E4 Amount of memory currently allocated to the screen [150]
11E8 Highest mode number available [161]
11EC
11F0 Bit 0 [referenced by ReadVduVars]
Bit 1 [referenced by ReadVduVars]
Bit 2 [referenced by ReadVduVars]
Bit 3 text printing direction vertical if set
Bit 9 Cursor state
Bit 21 ChangedBox calculation enabled if set
Bit 30 [referenced by ReadVduVars]
11F4 [referenced by RemoveCursors]
11F8
11FC
1200
1204
1208
120C
1210
1214
1218
121C
1220
1224
1228 VIDC clock speed in kHz [172]
122C - 135C Treacher's Gorge
1360 x size of VDU 5 chars (in pixels) [162]
1364 y size of VDU 5 chars (in pixels) [163]
1368 x spacing of VDU 5 chars (in pixels) [164]
136C y spacing of VDU 5 chars (in pixels) [165]
1370 x size of VDU 4 chars (in pixels) [167]
1374 y size of VDU 4 chars (in pixels) [168]
1378 x spacing of VDU 4 chars (in pixels) [169]
137C y spacing of VDU 4 chars (in pixels) [170]
1380 Address of fast line-draw routine [166]
1384 Address of colour blocks for current GCOLs [171]
1388 - 159C Spoiled Plains
15A0 Byte 0 ClaimScreenMemory flag
Byte 1
Byte 2
Byte 3
15A4 - 1668 Doriendor Corishev
166C ChangedBox flag word
1670 ChangedBox x coordinate of left edge
1674 ChangedBox y coordinate of bottom edge
1678 ChangedBox x coordinate of right edge
167C ChangedBox y coordinate of top edge
1680 - 3FFC Trackless wastes
4000-7FFC RISC OS scratch space